package com.company;

public class A_6Arrays {//  arrays -->数组
    public static void main(String[] args) {
        /*
         *数组的定义方法：（定义时必须初始化）
         *      1 int[] nums1 = new int[5];  没有值必须给长度 n  相当与申请空间  想要扩展空间可以用arrays.copyof方法
         *      2 int[] nums2;          先声明
         *          nums3 = new int[5]    给长度初始化
         *      3 int[] nums3 = new int[]{1,2,3,4,5} 直接赋值 不需要给长度  也不能给长度
         *      4 int [] nums4 = {1,2,3,4.5}  上面的简写
         * 注意 不给长度就要直接赋值  给了长度就不能直接赋值
         *
         *
         * */

       /**
        *  int[] nums = new int[]{1,2,3,4,5};   // 不能给长度  否则报错
        System.out.println(Arrays.toString(nums));  // Arrays.toString  方法打印数组  [1, 2, 3, 4, 5]
        直接打印数组名
        //

        // 直接用toString则打印数组的地址
        System.out.println(nums.toString());//[I@1540e19d
*/
       /**
        * int[] nums4 = {1, 2, 3, 4, 5};//这里也不能赋值
        System.out.println(Arrays.toString(nums4));
        System.out.println(nums4[4]);
        System.out.println(nums4[4]);*/


       /*
       * 数组的赋值 ：
       * nums.length  这个表示数组的长度  任何数组都有的属性length
       *
       * 里面的每个数据称为元素
       * 数组元素的位置从0 开始
       * 位置成为下标  0开始 - length-1结束
       *
       *
       * */

//        1 利用循环  ：
//        int[] nums = new int[5];
        /**for (int i = 0 ; i < nums.length; i++){
            nums[i] = i+1;
        }*/
//        2 直接赋值 单个赋值
     /**   nums[0] = 1;
        nums[1] = 1;
        nums[2] = 1;
        nums[3] = 1;
        nums[4] = 1;
      //        System.out.println(Arrays.toString(nums));
      */

//    数组的遍历

//        1  for 循环
        /**



        利用 len = arrays.length 循环的效率要比 length的高  不用每循环都求一遍  前提是长度不能变
        for （int i = 0 ;i < arrays.length ; i++ ）
        System.out.println(arrays[i]);
          */
//        2 forearch   (不是关键字)
       /** int[] nums = {1, 2, 3, 4, 5};
        for(int x:nums){
            //java  jdk 1.5 以后可以用的新方法（还有可变参数）
            // 类似于python 的循环  x取到 元素的值  不能控制下标
            System.out.println(x);
        }*/



       /*
       * 注意两个异常
       *    空指针异常
       *        变量null  时  调用属性和方法则会报错
       *        println(Arrays.toString(null));
       *    数组越界异常
       *        int[5]
       *        打印第六个数则越界
       *
       * */





//



       /*
       * 可变参数  jdk 1.5 之后的新特性
       *
       * */


        }
/**
    public static void print1(int[] x){
        System.out.println(Arrays.toString(x));

    }
    public static void print2(int... x){
        //... x  表示可变参数相当于数组  可变参数只能是参数列表的最后一个
//         不用打包
//        把数组拆分为集合

        //不能重载

    }
*/





















}
